#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = '汤小洋'

'''
1.数据维度
    将数据进行组织和维护的形式，称为数据维度，表示数据之间的关系和逻辑
2.分类
    一维数据：采用线性方式组织，对应数学中的数组的概念，如：序列、集合
    二维数据：采用表格方式组织，对应数学中的矩阵，如：表格
    高维数据：采用对象方式组织，由键值对类型的数据构成，可以多层嵌套，如：HTML、XML、JSON
'''

'''
一维数据的处理
    在表示时，一般都以列表的形式来表示
    在存储时，一般都以逗号分隔的格式进行存储，称为CSV格式（Comma-Separated Values逗号分隔值）
    文件以.csv为扩展名，可以使用记事本或Excel打开
'''


def write_csv():
    names = ['tom', 'jack', 'alice', 'mike']
    with open('stu.csv', 'w') as f:
        f.write(','.join(names) + '\n')


def read_csv():
    with open('stu.csv', 'r') as f:
        data = f.read().strip().split(',')
        print(data)


'''
二维数据的处理
    在表示时，采用二维列表的形式来表示，即列表中的每个元素又都是一个列表
    在存储时，csv文件的每一行都是一维数据，多行就是二维数据
'''


def write_csv2():
    stus = [
        [1001, 'tom', 20, 'male'],
        [1002, 'jack', 18, 'male'],
        [1003, 'alice', 21, 'female'],
        [1004, 'mike', 24, 'male']
    ]
    with open('stus.csv', 'w') as f:
        for stu in stus:
            # f.write(','.join(stu) + '\n')
            line = f'{stu[0]},{stu[1]},{stu[2]},{stu[3]}\n'
            f.write(line)


def read_csv2():
    data = []
    with open('stus.csv', 'r') as f:
        for line in f.readlines():
            data.append(line.strip().split(','))
    print(data)


if __name__ == '__main__':
    # write_csv()
    # read_csv()
    # write_csv2()
    read_csv2()